/**
 */
package org.soyatec.tooling.gef.examples.shapes.util;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
import org.eclipse.emf.ecore.EObject;
import org.soyatec.tooling.gef.examples.shapes.Connection;
import org.soyatec.tooling.gef.examples.shapes.DashedLine;
import org.soyatec.tooling.gef.examples.shapes.Ellipse;
import org.soyatec.tooling.gef.examples.shapes.Graph;
import org.soyatec.tooling.gef.examples.shapes.Rectangle;
import org.soyatec.tooling.gef.examples.shapes.Shape;
import org.soyatec.tooling.gef.examples.shapes.ShapesPackage;
import org.soyatec.tooling.gef.examples.shapes.SolidLine;

/**
 * <!-- begin-user-doc --> The <b>Adapter Factory</b> for the model. It provides
 * an adapter <code>createXXX</code> method for each class of the model. <!--
 * end-user-doc -->
 * 
 * @see org.soyatec.tooling.gef.examples.shapes.ShapesPackage
 * @generated
 */
public class ShapesAdapterFactory extends AdapterFactoryImpl {
    /**
     * The cached model package. <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    protected static ShapesPackage modelPackage;

    /**
     * Creates an instance of the adapter factory. <!-- begin-user-doc --> <!--
     * end-user-doc -->
     * 
     * @generated
     */
    public ShapesAdapterFactory() {
        if (modelPackage == null) {
            modelPackage = ShapesPackage.eINSTANCE;
        }
    }

    /**
     * Returns whether this factory is applicable for the type of the object.
     * <!-- begin-user-doc --> This implementation returns <code>true</code> if
     * the object is either the model's package or is an instance object of the
     * model. <!-- end-user-doc -->
     * 
     * @return whether this factory is applicable for the type of the object.
     * @generated
     */
    @Override
    public boolean isFactoryForType(Object object) {
        if (object == modelPackage) {
            return true;
        }
        if (object instanceof EObject) {
            return ((EObject) object).eClass().getEPackage() == modelPackage;
        }
        return false;
    }

    /**
     * The switch that delegates to the <code>createXXX</code> methods. <!--
     * begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated
     */
    protected ShapesSwitch<Adapter> modelSwitch = new ShapesSwitch<Adapter>() {
        @Override
        public Adapter caseGraph(Graph object) {
            return createGraphAdapter();
        }

        @Override
        public Adapter caseShape(Shape object) {
            return createShapeAdapter();
        }

        @Override
        public Adapter caseEllipse(Ellipse object) {
            return createEllipseAdapter();
        }

        @Override
        public Adapter caseRectangle(Rectangle object) {
            return createRectangleAdapter();
        }

        @Override
        public Adapter caseConnection(Connection object) {
            return createConnectionAdapter();
        }

        @Override
        public Adapter caseSolidLine(SolidLine object) {
            return createSolidLineAdapter();
        }

        @Override
        public Adapter caseDashedLine(DashedLine object) {
            return createDashedLineAdapter();
        }

        @Override
        public Adapter defaultCase(EObject object) {
            return createEObjectAdapter();
        }
    };

    /**
     * Creates an adapter for the <code>target</code>. <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * 
     * @param target
     *            the object to adapt.
     * @return the adapter for the <code>target</code>.
     * @generated
     */
    @Override
    public Adapter createAdapter(Notifier target) {
        return modelSwitch.doSwitch((EObject) target);
    }

    /**
     * Creates a new adapter for an object of class '
     * {@link org.soyatec.tooling.gef.examples.shapes.Graph <em>Graph</em>}'.
     * <!-- begin-user-doc --> This default implementation returns null so that
     * we can easily ignore cases; it's useful to ignore a case when inheritance
     * will catch all the cases anyway. <!-- end-user-doc -->
     * 
     * @return the new adapter.
     * @see org.soyatec.tooling.gef.examples.shapes.Graph
     * @generated
     */
    public Adapter createGraphAdapter() {
        return null;
    }

    /**
     * Creates a new adapter for an object of class '
     * {@link org.soyatec.tooling.gef.examples.shapes.Shape <em>Shape</em>}'.
     * <!-- begin-user-doc --> This default implementation returns null so that
     * we can easily ignore cases; it's useful to ignore a case when inheritance
     * will catch all the cases anyway. <!-- end-user-doc -->
     * 
     * @return the new adapter.
     * @see org.soyatec.tooling.gef.examples.shapes.Shape
     * @generated
     */
    public Adapter createShapeAdapter() {
        return null;
    }

    /**
     * Creates a new adapter for an object of class '
     * {@link org.soyatec.tooling.gef.examples.shapes.Ellipse <em>Ellipse</em>}
     * '. <!-- begin-user-doc --> This default implementation returns null so
     * that we can easily ignore cases; it's useful to ignore a case when
     * inheritance will catch all the cases anyway. <!-- end-user-doc -->
     * 
     * @return the new adapter.
     * @see org.soyatec.tooling.gef.examples.shapes.Ellipse
     * @generated
     */
    public Adapter createEllipseAdapter() {
        return null;
    }

    /**
     * Creates a new adapter for an object of class '
     * {@link org.soyatec.tooling.gef.examples.shapes.Rectangle
     * <em>Rectangle</em>}'. <!-- begin-user-doc --> This default implementation
     * returns null so that we can easily ignore cases; it's useful to ignore a
     * case when inheritance will catch all the cases anyway. <!-- end-user-doc
     * -->
     * 
     * @return the new adapter.
     * @see org.soyatec.tooling.gef.examples.shapes.Rectangle
     * @generated
     */
    public Adapter createRectangleAdapter() {
        return null;
    }

    /**
     * Creates a new adapter for an object of class '
     * {@link org.soyatec.tooling.gef.examples.shapes.Connection
     * <em>Connection</em>}'. <!-- begin-user-doc --> This default
     * implementation returns null so that we can easily ignore cases; it's
     * useful to ignore a case when inheritance will catch all the cases anyway.
     * <!-- end-user-doc -->
     * 
     * @return the new adapter.
     * @see org.soyatec.tooling.gef.examples.shapes.Connection
     * @generated
     */
    public Adapter createConnectionAdapter() {
        return null;
    }

    /**
     * Creates a new adapter for an object of class '
     * {@link org.soyatec.tooling.gef.examples.shapes.SolidLine
     * <em>Solid Line</em>}'. <!-- begin-user-doc --> This default
     * implementation returns null so that we can easily ignore cases; it's
     * useful to ignore a case when inheritance will catch all the cases anyway.
     * <!-- end-user-doc -->
     * 
     * @return the new adapter.
     * @see org.soyatec.tooling.gef.examples.shapes.SolidLine
     * @generated
     */
    public Adapter createSolidLineAdapter() {
        return null;
    }

    /**
     * Creates a new adapter for an object of class '
     * {@link org.soyatec.tooling.gef.examples.shapes.DashedLine
     * <em>Dashed Line</em>}'. <!-- begin-user-doc --> This default
     * implementation returns null so that we can easily ignore cases; it's
     * useful to ignore a case when inheritance will catch all the cases anyway.
     * <!-- end-user-doc -->
     * 
     * @return the new adapter.
     * @see org.soyatec.tooling.gef.examples.shapes.DashedLine
     * @generated
     */
    public Adapter createDashedLineAdapter() {
        return null;
    }

    /**
     * Creates a new adapter for the default case. <!-- begin-user-doc --> This
     * default implementation returns null. <!-- end-user-doc -->
     * 
     * @return the new adapter.
     * @generated
     */
    public Adapter createEObjectAdapter() {
        return null;
    }

} // ShapesAdapterFactory
